// Inferno utils/8l/asm。c 
// https:
// 
// 版权所有©1994-1999朗讯科技有限公司。保留所有权利。
// 版权所有©1995-1997 C H Forsyth(forsyth@terzarima.net)
// 部分版权©1997-1999维塔诺瓦有限公司
// 部分版权©2000-2007维塔诺瓦控股有限公司（www.vitanuova.com）
// 部分版权©20042006布鲁斯·埃利斯
// 修订版权©2000-2007朗讯科技有限公司及其他
// 部分版权©2009 Go作者。保留所有权利。
// 
// 特此免费授予获得本软件及相关文档文件（以下简称“软件”）副本
// 的任何人在本软件中不受限制地处理
// 的权利，包括但不限于
// 使用、复制、修改、合并、发布、分发、再许可的权利，和/或出售本软件的
// 副本，并允许提供本软件的人员在以下条件下这样做：
// 
// 上述版权声明和本许可声明应包含在
// 本软件的所有副本或大部分中。
// 
// 本软件按“原样”提供，不提供任何形式的明示或暗示担保，包括但不限于适销性担保、
// 适用于特定用途和非侵权性担保。在任何情况下，
// 作者或版权持有人均不对任何索赔、损害赔偿或其他
// 责任承担责任，无论是合同诉讼、侵权诉讼还是其他诉讼，均由
// 因本软件或本软件的使用或其他交易引起，或与本软件或本软件的使用或其他交易有关。

package sym

// 糟糕但标准的术语。
// 段描述要加载到内存中的文件块。
// 一节进一步描述了该块在调试器等中的使用。

type Segment struct {
	Rwx      uint8  // 常规unix位权限（5=r-x等）
	Vaddr    uint64 // 虚拟地址
	Length   uint64 // 内存长度
	Fileoff  uint64 // 文件偏移量
	Filelen  uint64 // 磁盘长度
	Sections []*Section
}

type Section struct {
	Rwx     uint8
	Extnum  int16
	Align   int32
	Name    string
	Vaddr   uint64
	Length  uint64
	Seg     *Segment
	Elfsect interface{} // 一个*ld。ElfShdr 
	Reloff  uint64
	Rellen  uint64
	// Relcount是应用于本节
	// （外部链接时）的*主机*重定位数。
	// 在多个goroutine上以原子方式递增。
	// 注意：这可能与Go重新定位的数量不同，因为一次Go重新定位
	// 可能会变成多个主机重新定位。
	Relcount uint32
	Sym      LoaderSym // 节的符号，如果有
	Index    uint16    // 每个节都有一个唯一的索引，在内部使用
}
